{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-01-03T05:28:33.867690Z",
     "start_time": "2018-01-03T05:28:33.857506Z"
    }
   },
   "source": [
    "# 第三步：调整树的参数：max_depth & min_child_weight\n",
    "(细调，参数的步长为1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-01-03T07:20:57.168644Z",
     "start_time": "2018-01-03T07:20:56.280265Z"
    },
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.6/site-packages/sklearn/cross_validation.py:41: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.\n",
      "  \"This module will be removed in 0.20.\", DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "# import 必要的模块\n",
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-01-03T05:29:23.134530Z",
     "start_time": "2018-01-03T05:29:23.130290Z"
    }
   },
   "source": [
    "# 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-01-03T07:21:00.417138Z",
     "start_time": "2018-01-03T07:20:58.840712Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "      <th>interest_level</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "      <td>3000</td>\n",
       "      <td>1200.0</td>\n",
       "      <td>750.000000</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>4.5</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>5465</td>\n",
       "      <td>2732.5</td>\n",
       "      <td>1821.666667</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.0</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>17</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3275</td>\n",
       "      <td>1637.5</td>\n",
       "      <td>1637.500000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>18</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4</td>\n",
       "      <td>3350</td>\n",
       "      <td>1675.0</td>\n",
       "      <td>670.000000</td>\n",
       "      <td>-3.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>28</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 228 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.5         3   3000           1200.0      750.000000       -1.5   \n",
       "1        1.0         2   5465           2732.5     1821.666667       -1.0   \n",
       "2        1.0         1   2850           1425.0     1425.000000        0.0   \n",
       "3        1.0         1   3275           1637.5     1637.500000        0.0   \n",
       "4        1.0         4   3350           1675.0      670.000000       -3.0   \n",
       "\n",
       "   room_num  Year  Month  Day       ...        walk  walls  war  washer  \\\n",
       "0       4.5  2016      6   24       ...           0      0    0       0   \n",
       "1       3.0  2016      6   12       ...           0      0    0       0   \n",
       "2       2.0  2016      4   17       ...           0      0    0       0   \n",
       "3       2.0  2016      4   18       ...           0      0    0       0   \n",
       "4       5.0  2016      4   28       ...           0      0    1       0   \n",
       "\n",
       "   water  wheelchair  wifi  windows  work  interest_level  \n",
       "0      0           0     0        0     0               1  \n",
       "1      0           0     0        0     0               2  \n",
       "2      0           0     0        0     0               0  \n",
       "3      0           0     0        0     0               2  \n",
       "4      0           0     0        0     0               2  \n",
       "\n",
       "[5 rows x 228 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dpath = './data/'\n",
    "data = pd.read_csv(dpath + 'RentListingInquries_FE_train.csv')\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-01-03T07:21:03.753235Z",
     "start_time": "2018-01-03T07:21:01.950294Z"
    },
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>bathrooms</th>\n",
       "      <th>bedrooms</th>\n",
       "      <th>price</th>\n",
       "      <th>price_bathrooms</th>\n",
       "      <th>price_bedrooms</th>\n",
       "      <th>room_diff</th>\n",
       "      <th>room_num</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>...</th>\n",
       "      <th>virtual</th>\n",
       "      <th>walk</th>\n",
       "      <th>walls</th>\n",
       "      <th>war</th>\n",
       "      <th>washer</th>\n",
       "      <th>water</th>\n",
       "      <th>wheelchair</th>\n",
       "      <th>wifi</th>\n",
       "      <th>windows</th>\n",
       "      <th>work</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>2950</td>\n",
       "      <td>1475.000000</td>\n",
       "      <td>1475.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>11</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>2850</td>\n",
       "      <td>1425.000000</td>\n",
       "      <td>950.000000</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>24</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3758</td>\n",
       "      <td>1879.000000</td>\n",
       "      <td>1879.000000</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>3300</td>\n",
       "      <td>1650.000000</td>\n",
       "      <td>1100.000000</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>6</td>\n",
       "      <td>11</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.0</td>\n",
       "      <td>2</td>\n",
       "      <td>4900</td>\n",
       "      <td>1633.333333</td>\n",
       "      <td>1633.333333</td>\n",
       "      <td>0.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>2016</td>\n",
       "      <td>4</td>\n",
       "      <td>12</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 227 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   bathrooms  bedrooms  price  price_bathrooms  price_bedrooms  room_diff  \\\n",
       "0        1.0         1   2950      1475.000000     1475.000000        0.0   \n",
       "1        1.0         2   2850      1425.000000      950.000000       -1.0   \n",
       "2        1.0         1   3758      1879.000000     1879.000000        0.0   \n",
       "3        1.0         2   3300      1650.000000     1100.000000       -1.0   \n",
       "4        2.0         2   4900      1633.333333     1633.333333        0.0   \n",
       "\n",
       "   room_num  Year  Month  Day  ...   virtual  walk  walls  war  washer  water  \\\n",
       "0       2.0  2016      6   11  ...         0     0      0    0       0      0   \n",
       "1       3.0  2016      6   24  ...         0     0      0    1       0      0   \n",
       "2       2.0  2016      6    3  ...         0     0      0    0       0      0   \n",
       "3       3.0  2016      6   11  ...         0     0      0    0       0      0   \n",
       "4       4.0  2016      4   12  ...         0     0      0    1       0      0   \n",
       "\n",
       "   wheelchair  wifi  windows  work  \n",
       "0           0     0        0     0  \n",
       "1           0     0        0     0  \n",
       "2           0     0        0     0  \n",
       "3           1     0        0     0  \n",
       "4           0     0        0     0  \n",
       "\n",
       "[5 rows x 227 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "target = pd.read_csv(dpath + 'RentListingInquries_FE_test.csv')\n",
    "target.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-01-03T07:21:04.569980Z",
     "start_time": "2018-01-03T07:21:04.348524Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.6/site-packages/pandas/core/indexing.py:517: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
      "  self.obj[item] = s\n"
     ]
    }
   ],
   "source": [
    "def remove_noise(df):\n",
    "#remove some noise\n",
    "    df= df[df.price < 10000]\n",
    "\n",
    "    df.loc[df[\"bathrooms\"] == 112, \"bathrooms\"] = 1.5\n",
    "    df.loc[df[\"bathrooms\"] == 10, \"bathrooms\"] = 1\n",
    "    df.loc[df[\"bathrooms\"] == 20, \"bathrooms\"] = 2\n",
    "    return df\n",
    "data = remove_noise(data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 特征编码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-01-03T07:21:06.611563Z",
     "start_time": "2018-01-03T07:21:06.545982Z"
    },
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y_train = data['interest_level']\n",
    "X_train = data.drop('interest_level',axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 数据预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-01-03T07:21:08.825074Z",
     "start_time": "2018-01-03T07:21:08.462430Z"
    },
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# 数据标准化 \n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "# 初始化特征的标准化器\n",
    "ss_X = StandardScaler()\n",
    "\n",
    "# 分别对训练和测试数据的特征进行标准化处理\n",
    "X_train = ss_X.fit_transform(X_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 模型训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-01-03T07:21:11.395902Z",
     "start_time": "2018-01-03T07:21:11.369339Z"
    },
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)\n",
    "kfold = list(kfold.split(X_train,y_train))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-01-03T07:21:12.346745Z",
     "start_time": "2018-01-03T07:21:12.337542Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'max_depth': [4, 5, 6], 'min_child_weight': [2, 3, 4]}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "max_depth = [4,5,6]\n",
    "min_child_weight = [2,3,4]\n",
    "param_test2_2 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "param_test2_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-01-03T07:42:25.791720Z",
     "start_time": "2018-01-03T07:21:17.824744Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.6/site-packages/sklearn/model_selection/_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.60440, std: 0.00383, params: {'max_depth': 4, 'min_child_weight': 2},\n",
       "  mean: -0.60395, std: 0.00410, params: {'max_depth': 4, 'min_child_weight': 3},\n",
       "  mean: -0.60373, std: 0.00412, params: {'max_depth': 4, 'min_child_weight': 4},\n",
       "  mean: -0.60046, std: 0.00476, params: {'max_depth': 5, 'min_child_weight': 2},\n",
       "  mean: -0.59995, std: 0.00511, params: {'max_depth': 5, 'min_child_weight': 3},\n",
       "  mean: -0.60011, std: 0.00402, params: {'max_depth': 5, 'min_child_weight': 4},\n",
       "  mean: -0.59982, std: 0.00628, params: {'max_depth': 6, 'min_child_weight': 2},\n",
       "  mean: -0.60022, std: 0.00615, params: {'max_depth': 6, 'min_child_weight': 3},\n",
       "  mean: -0.59997, std: 0.00497, params: {'max_depth': 6, 'min_child_weight': 4}],\n",
       " {'max_depth': 6, 'min_child_weight': 2},\n",
       " -0.5998211710433593)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb2_2 = XGBClassifier(\n",
    "        learning_rate = 0.1,\n",
    "        n_estimators = 247,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth = 5,\n",
    "        min_child_weight = 1,\n",
    "        gamma = 0,\n",
    "        subsample = 0.3,\n",
    "        colsample_bytree = 0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch2_2 = GridSearchCV(xgb2_2, param_grid = param_test2_2, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch2_2.fit(X_train , y_train)\n",
    "\n",
    "gsearch2_2.grid_scores_, gsearch2_2.best_params_,     gsearch2_2.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-01-03T07:42:26.414876Z",
     "start_time": "2018-01-03T07:42:26.389981Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([ 175.86258016,  167.92318082,  155.43449163,  203.20137806,\n",
       "         197.69890518,  172.38248405,  208.16291361,  207.40640249,\n",
       "         159.56920114]),\n",
       " 'mean_score_time': array([ 0.68700228,  0.79411974,  0.80901046,  0.82558827,  1.07284622,\n",
       "         0.86572556,  1.0387732 ,  1.09693203,  0.80286756]),\n",
       " 'mean_test_score': array([-0.60440199, -0.60394605, -0.60372809, -0.60045699, -0.59995182,\n",
       "        -0.60010804, -0.59982117, -0.60021753, -0.59997374]),\n",
       " 'mean_train_score': array([-0.5558922 , -0.55674726, -0.55786959, -0.51791429, -0.52073803,\n",
       "        -0.52308316, -0.47156467, -0.47701305, -0.48171964]),\n",
       " 'param_max_depth': masked_array(data = [4 4 4 5 5 5 6 6 6],\n",
       "              mask = [False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'param_min_child_weight': masked_array(data = [2 3 4 2 3 4 2 3 4],\n",
       "              mask = [False False False False False False False False False],\n",
       "        fill_value = ?),\n",
       " 'params': [{'max_depth': 4, 'min_child_weight': 2},\n",
       "  {'max_depth': 4, 'min_child_weight': 3},\n",
       "  {'max_depth': 4, 'min_child_weight': 4},\n",
       "  {'max_depth': 5, 'min_child_weight': 2},\n",
       "  {'max_depth': 5, 'min_child_weight': 3},\n",
       "  {'max_depth': 5, 'min_child_weight': 4},\n",
       "  {'max_depth': 6, 'min_child_weight': 2},\n",
       "  {'max_depth': 6, 'min_child_weight': 3},\n",
       "  {'max_depth': 6, 'min_child_weight': 4}],\n",
       " 'rank_test_score': array([9, 8, 7, 6, 2, 4, 1, 5, 3], dtype=int32),\n",
       " 'split0_test_score': array([-0.59862903, -0.59761238, -0.59704156, -0.59247291, -0.59107366,\n",
       "        -0.59285746, -0.58979677, -0.59029651, -0.59240547]),\n",
       " 'split0_train_score': array([-0.55860711, -0.55915787, -0.56060485, -0.51851815, -0.52131844,\n",
       "        -0.5241272 , -0.47460513, -0.47960431, -0.48478184]),\n",
       " 'split1_test_score': array([-0.61024355, -0.60992982, -0.60929007, -0.60717189, -0.60615631,\n",
       "        -0.60492319, -0.60807985, -0.60824564, -0.60601667]),\n",
       " 'split1_train_score': array([-0.55385408, -0.55464714, -0.55576172, -0.51676161, -0.51982627,\n",
       "        -0.52128474, -0.46923439, -0.47566128, -0.479717  ]),\n",
       " 'split2_test_score': array([-0.6062537 , -0.60552977, -0.60624122, -0.60122937, -0.60130392,\n",
       "        -0.60130817, -0.60258398, -0.60280801, -0.60390093]),\n",
       " 'split2_train_score': array([-0.5545936 , -0.55608278, -0.55709932, -0.51591477, -0.51881157,\n",
       "        -0.52159261, -0.47204712, -0.47672103, -0.48138722]),\n",
       " 'split3_test_score': array([-0.60397978, -0.60490672, -0.60405008, -0.60204583, -0.60291003,\n",
       "        -0.60188395, -0.60249483, -0.60299388, -0.60114973]),\n",
       " 'split3_train_score': array([-0.55514471, -0.55582881, -0.55648161, -0.51934532, -0.5220005 ,\n",
       "        -0.52363174, -0.47056497, -0.47547867, -0.48163047]),\n",
       " 'split4_test_score': array([-0.60290506, -0.60175289, -0.60201901, -0.59936674, -0.59831727,\n",
       "        -0.59956918, -0.59615267, -0.59674585, -0.5963976 ]),\n",
       " 'split4_train_score': array([-0.55726147, -0.55801971, -0.55940045, -0.51903159, -0.52173337,\n",
       "        -0.52477952, -0.47137173, -0.47759996, -0.48108169]),\n",
       " 'std_fit_time': array([  0.42739754,   9.46105305,   0.73431641,   3.8193421 ,\n",
       "         13.0966892 ,   0.44370184,   2.45958685,   2.92246314,   0.36702596]),\n",
       " 'std_score_time': array([ 0.12817532,  0.12156927,  0.04372606,  0.13602719,  0.33286054,\n",
       "         0.10028535,  0.28354801,  0.44237728,  0.14402188]),\n",
       " 'std_test_score': array([ 0.00382901,  0.00410295,  0.00412301,  0.00475731,  0.0051105 ,\n",
       "         0.0040163 ,  0.00627624,  0.00615419,  0.00496793]),\n",
       " 'std_train_score': array([ 0.00176888,  0.00162023,  0.00183238,  0.00134072,  0.0012218 ,\n",
       "         0.00139461,  0.00178572,  0.00150506,  0.00166812])}"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch2_2.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-01-03T07:42:27.391539Z",
     "start_time": "2018-01-03T07:42:26.985698Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.599821 using {'max_depth': 6, 'min_child_weight': 2}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/anaconda3/lib/python3.6/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAELCAYAAADz6wBxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzt3XmcXGWd9/3Pr7t635JOZ0+YLAYh\nQAjQBhDDIgaCcqMowwgyNzgiPqMOIz4ywoiG1UHuqMAjLgwDKKgM4jIREQiECMQ7QgcTICFAEmJo\nsncn6e50ev89f5xTnarq6rW6ev2+X6969alzrlN1VXV1ffu6rnPOZe6OiIhIX2UMdgVERGR4U5CI\niEhKFCQiIpISBYmIiKREQSIiIilRkIiISEoUJCIikhIFiYiIpERBIiIiKYkMdgUGQllZmc+YMWOw\nqyEiMmyUlZXx1FNPPeXui7srOyqCZMaMGVRUVAx2NUREhhUzK+tJOXVtiYhIShQkIiKSEgWJiIik\nREEiIiIpUZCIiEhKFCQiIpISBYmIiKRkVJxH0lf/s/Y9AKaX5jN9bD5lhdmY2SDXSkRkaFGQdOG7\nT7/Ftur69vt5WZlMG5sXBkv4MwyZ6aV5FOVmDWJtRUQGh4KkC09+ZSGV+w7xbnV9cAuXt1XX89I7\n1dQ1tsSVH5Of1R4q08fmMy0MnCNK85k6No+cSOYgvRIRkfRRkHQhPzvCkROLOHJiUYdt7s7++mbe\n3VfPu9WHwp9B2GzcUcszG3bT1NrWXt4MJhbldgiZaKtmUnEumRnqNhOR4UdB0kdmxtiCbMYWZDNv\n2pgO29vanN21jWxrb80cDpzVW6rYsfY93A+Xz8o0po4JgmVaTKsm2o1WWqDxGREZmhQkaZKRYUwq\nyWVSSS4LZpZ22N7U0sb2/YfaA2ZbGDaV1fU8tX0n1Qeb4soXZGceDpj2cZnDgVOQo1+liAwOffsM\nkuxIBjPKCphRVpB0e11jC5XRVkxsi6a6nj9vrqK+qTWufGlBNtPH5oVdZkHAHBEuTxmTR3ZER3qL\nSHooSIaowpwIR00q5qhJxR22uTvVB5vaB/+jIVO5r5717x3g6fU7aW493G+WYTCpODcuZGJbNBOL\ncsnQ+IyI9JGCZBgyM8YV5jCuMIf50zuOz7S2ObtqGmLGZw5RGQbOqk172VXbEDc+k52ZwbT21kxe\n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\noRAk5eXl3H333Sk/TnemTJmS9Et6oNx3333MnTu3T/t2FSSRSITvfve7vPHGG6xevZp77rmn28Dq\nq26P2jKzO4BbgUPAk8DxwFfc/eG01EhE4tz0+/Vs2F7Tr485d0oxS/7XMZ1uv+6669i8eTPz589n\n0aJFTJgwgUcffZTGxkYuvPBCbrrpJg4ePMjFF19MZWUlra2tfPOb32TXrl1s376ds846i7KyMp57\n7rmkj19YWMiXvvQlnnnmGcaOHcu3v/1t/u3f/o1t27Zx5513csEFF7By5UqWLl3K448/zo033si2\nbdvYsmUL27Zt4ytf+UqXrZWf/exnLF26FDNj3rx5PPTQQwA8//zzfO9732Pnzp3ccccdXHTRRWzd\nupXzzz+f119/Pe4xqqqquOSSS9izZw8LFiygq7mb7rjjDnJzc7n66qu55pprWLduHStWrODZZ5/l\ngQce4OGHH+bpp59myZIlNDY2Mnv2bB544AEKCws588wzWbp0KeXl5fzXf/0X3/nOd5gyZQpz5swh\nJyeHH/zgB53W/brrruONN95g/vz5XH755VxzzTXtdZo8eTKTJ08GoKioiKOPPpr33nuvz6HVlZ50\nbZ0TDrafTzCX+pHAtf1eExEZMm6//XZmz57N2rVrWbRoEW+//TYvvfQSa9euZc2aNTz//PM8+eST\nTJkyhXXr1vH666+zePFirr76aqZMmcJzzz3XaYgAHDx4kDPPPJM1a9ZQVFTEDTfcwPLly/ntb3/L\nt771raT7bNy4kaeeeoqXXnqJm266iebm5qTl1q9fz2233caKFStYt25dXJfOjh07ePHFF3n88ce5\n7rrrunwPbrrpJj70oQ/x17/+lQsuuIBt27Z1Wvb000/nhRdeAIIuubq6Opqbm3nxxRdZuHAhe/fu\n5dZbb+WZZ57hlVdeoby8nO99L/7g1+3bt3PLLbewevVqli9fzsaN8bOIJ6v77bffzsKFC1m7di3X\nXHMN27dv56Mf/WiH+m3dupW//vWvnHzyyV2+5r7qyXkk0TNUPgr8MpzyNi2VEZGOumo5DISnn36a\np59+mhNOOAGAuro63n77bRYuXMjXvvY1vv71r3P++eezcOHCHj9mdnY2ixcvBuC4444jJyeHrKws\njjvuOLZu3Zp0n4997GPk5OSQk5PDhAkT2LVrF9OmTetQbsWKFVx00UWUlZUBUFpa2r7tE5/4BBkZ\n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\nmaLa5rE4AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10b0c75f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch2_2.best_score_, gsearch2_2.best_params_))\n",
    "test_means = gsearch2_2.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_2.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_2.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_2.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_2.cv_results_).to_csv('my_preds_maxdepth_min_child_weights_2.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(min_child_weight), len(max_depth))\n",
    "train_scores = np.array(train_means).reshape(len(min_child_weight), len(max_depth))\n",
    "\n",
    "for i, value in enumerate(min_child_weight):\n",
    "    pyplot.plot(max_depth, - test_scores[i], label= 'test_min_child_weight:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, - train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'max_depth' )                                                                                                      \n",
    "pyplot.ylabel( '- Log Loss' )\n",
    "pyplot.savefig( 'max_depth_vs_min_child_weght_2.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当'max_depth'= 6, 'min_child_weight'= 2，logless 为 0.599821，比'max_depth'= 5, 'min_child_weight'= 3的logless 0.599952 小了一点，继续调优 n_estimators"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "hide_input": false,
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  },
  "latex_envs": {
   "LaTeX_envs_menu_present": true,
   "autocomplete": true,
   "bibliofile": "biblio.bib",
   "cite_by": "apalike",
   "current_citInitial": 1,
   "eqLabelWithNumbers": true,
   "eqNumInitial": 1,
   "hotkeys": {
    "equation": "Ctrl-E",
    "itemize": "Ctrl-I"
   },
   "labels_anchors": false,
   "latex_user_defs": false,
   "report_style_numbering": false,
   "user_envs_cfg": false
  },
  "nbTranslate": {
   "displayLangs": [
    "*"
   ],
   "hotkey": "alt-t",
   "langInMainMenu": true,
   "sourceLang": "en",
   "targetLang": "fr",
   "useGoogleTranslate": true
  },
  "toc": {
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": "block",
   "toc_window_display": false
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
